স্প্রিং জেডিবিসি (Spring JDBC) তে JdbcTemplate
এবং NamedParameterJdbcTemplate
ব্যবহার করে ডাটাবেসে বিভিন্ন ধরনের কোয়ারি চালানো যায়। নিচে উদাহরণসহ বিভিন্ন কোয়ারি মেথডগুলোর ব্যবহার দেখানো হলো:
queryForObject()
এই মেথডটি একটি সিঙ্গেল রেকর্ড (একটি রো) রিটার্ন করে। এটি সাধারণত যেখানে সুনির্দিষ্ট একটি রেকর্ড রিটার্ন করার প্রয়োজন হয় সেখানে ব্যবহার করা হয়।
String sql = "SELECT name FROM students WHERE id = ?";
String name = jdbcTemplate.queryForObject(sql, new Object[]{1}, String.class);
System.out.println("Student Name: " + name);
query()
এই মেথডটি এক বা একাধিক রেকর্ড (মাল্টিপল রো) রিটার্ন করার জন্য ব্যবহার করা হয়। এটি RowMapper ব্যবহার করে ডাটাকে মডেল অবজেক্টে ম্যাপ করে।
String sql = "SELECT id, name, age FROM students";
List<Student> students = jdbcTemplate.query(sql, (rs, rowNum) -> {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
return student;
});
students.forEach(student ->
System.out.println("ID: " + student.getId() + ", Name: " + student.getName() + ", Age: " + student.getAge()));
queryForList()
ডাটাবেস থেকে একটি লিস্ট অবজেক্ট রিটার্ন করে। এটি সাধারণত সরাসরি লিস্ট হিসেবে রেজাল্ট পেতে ব্যবহৃত হয়।
String sql = "SELECT name FROM students";
List<String> names = jdbcTemplate.queryForList(sql, String.class);
names.forEach(System.out::println);
queryForMap()
এই মেথডটি একটি সিঙ্গেল রেকর্ড (একটি রো) কে একটি Map হিসাবে রিটার্ন করে, যেখানে কলামের নামগুলো কী এবং তাদের মানগুলো ভ্যালু হিসেবে থাকে।
String sql = "SELECT id, name, age FROM students WHERE id = ?";
Map<String, Object> student = jdbcTemplate.queryForMap(sql, 1);
System.out.println("ID: " + student.get("id"));
System.out.println("Name: " + student.get("name"));
System.out.println("Age: " + student.get("age"));
update()
ডাটাবেসে ডাটা INSERT, UPDATE বা DELETE করার জন্য ব্যবহার করা হয়।
Insert Operation:
String sql = "INSERT INTO students (name, age) VALUES (?, ?)";
int result = jdbcTemplate.update(sql, "John Doe", 22);
if (result > 0) {
System.out.println("A new student has been inserted.");
}
Update Operation:
String sql = "UPDATE students SET age = ? WHERE id = ?";
int result = jdbcTemplate.update(sql, 25, 1);
if (result > 0) {
System.out.println("Student's age has been updated.");
}
Delete Operation:
String sql = "DELETE FROM students WHERE id = ?";
int result = jdbcTemplate.update(sql, 1);
if (result > 0) {
System.out.println("A student has been deleted.");
}
একাধিক রেকর্ড একসঙ্গে আপডেট করার জন্য ব্যবহার করা হয়। এটি পারফরম্যান্স উন্নত করতে সহায়ক।
String sql = "INSERT INTO students (name, age) VALUES (?, ?)";
List<Object[]> batchArgs = Arrays.asList(
new Object[]{"Alice", 20},
new Object[]{"Bob", 22},
new Object[]{"Charlie", 23}
);
int[] results = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println("Batch Update Completed: " + Arrays.toString(results));
NamedParameterJdbcTemplate
ব্যবহারনামযুক্ত প্যারামিটার দিয়ে কোয়ারি চালানোর জন্য এটি ব্যবহার করা হয়।
@Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
// Insert Operation
String sql = "INSERT INTO students (name, age) VALUES (:name, :age)";
Map<String, Object> params = new HashMap<>();
params.put("name", "David");
params.put("age", 24);
int result = namedParameterJdbcTemplate.update(sql, params);
if (result > 0) {
System.out.println("A new student has been inserted using NamedParameterJdbcTemplate.");
}
// Select Operation
String selectSql = "SELECT id, name, age FROM students WHERE age > :age";
Map<String, Object> selectParams = new HashMap<>();
selectParams.put("age", 20);
List<Student> students = namedParameterJdbcTemplate.query(selectSql, selectParams, (rs, rowNum) -> {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
return student;
});
students.forEach(student ->
System.out.println("ID: " + student.getId() + ", Name: " + student.getName() + ", Age: " + student.getAge()));
মেথড | ব্যবহার | রিটার্ন টাইপ |
---|---|---|
queryForObject | একটি সিঙ্গেল রেকর্ড ফিল্ড রিটার্ন করতে | একটি সিঙ্গেল ভ্যালু বা অবজেক্ট |
query | মাল্টিপল রেকর্ড ফিল্ড রিটার্ন করতে | একটি লিস্ট (RowMapper সহ) |
queryForList | মাল্টিপল রেকর্ড সরাসরি লিস্ট রিটার্ন করতে | লিস্ট |
queryForMap | একটি রেকর্ডকে ম্যাপ রিটার্ন করতে | Map (Key: Column Name, Value: Value) |
update | ডাটাবেসে ডাটা আপডেট/ইনসার্ট/ডিলিট করতে | int (affected rows count) |
batchUpdate | একাধিক রেকর্ড আপডেট করতে | int[] (প্রতিটি অপারেশনের ফলাফল) |
Spring JDBC এর এই মেথডগুলো ডেভেলপারদের ডাটাবেস অপারেশন দ্রুত এবং সহজে করতে সহায়তা করে।
Read more